package com.example.rabbit.demora.mq;

import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;

/**
 * User: Amos
 * Date: 2019/8/5
 * Time: 14:33
 */
//@Component
@Slf4j
public class MqDemoLister implements ChannelAwareMessageListener {
    @Override
    public void onMessage(Message message, Channel channel) throws Exception {
        log.info( "监听到的消息：{}",message);
        String msg = new String(message.getBody(), "UTF-8");
        // deliveryTag 每次接收消息+1，可以用来判断是是否重复消费
        //同一个会话， consumerTag 是固定的 可以做此会话的名字
        long deliveryTag = message.getMessageProperties().getDeliveryTag();
        message.getMessageProperties().getCorrelationId();
        log.info("处理消息。。。。。。。。。。。。。。。。。");
        channel.basicAck(deliveryTag,true);
//        channel.basicNack(deliveryTag,false,true);
        if(false){
            //失败
            //deliveryTag:该消息的index
           // multiple：是否批量.true:将一次性拒绝所有小于deliveryTag的消息。
            //requeue：被拒绝的是否重新入队列
            channel.basicNack(deliveryTag,false,true);
        }
    }
}
